package com.honeycomb.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 工具类
 * 
 * @author Wangyu
 */
public class HoneyCombTools {

	// 得到指定时间Date的INT值
	public static final int convertDTTMtoInt(Date givenDTTM) {
		return (int) (givenDTTM.getTime() / 1000);
	}

	// 得到当前时间Date的INT值
	public static final int convertCurrentDTTMtoInt() {
		return convertDTTMtoInt(new Date());
	}

	// 得到INT时间对应的时间Date
	public static final Date convertIntToDTTM(int dttmInt) {
		return new Date((long) dttmInt * 1000);
	}

	// 得到指定日期Date的INT值
	public static final int convertDTtoInt(Date givenDTTM) {
		return (int) (givenDTTM.getTime() / 1000 / 60 / 60 / 24) + 1;
	}

	// 得到当前日期Date的INT值
	public static final int convertCurrentDTtoInt() {
		return convertDTtoInt(new Date());
	}

	// 得到INT日期对应的时间Date
	public static final Date convertIntToDT(int dttmInt) {
		return new Date((long) dttmInt * 1000 * 60 * 60 * 24);
	}

	// 格式化时间yyyy-MM-dd HH:mm:ss
	public static final String formatDTTM(Date dt) {
		DateFormat df = new SimpleDateFormat(SystemConstants.HoneyComb_Date_Pattern_Normal);
		return df.format(dt);
	}

	// 格式化时间yyyyMMdd
	public static final String formatDT(Date dt) {
		DateFormat df = new SimpleDateFormat(SystemConstants.HoneyComb_Date_Pattern_Short);
		return df.format(dt);
	}

	// 把yyyy-MM-dd HH:mm:ss类型的String格式化为Date
	public static final Date formatStringToDateDTTM(String dtStr) {
		DateFormat df = new SimpleDateFormat(SystemConstants.HoneyComb_Date_Pattern_Normal);
		try {
			return df.parse(dtStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

	// 把yyyyMMdd类型的String格式化为Date
	public static final Date formatStringToDateDT(String dtStr) {
		DateFormat df = new SimpleDateFormat(SystemConstants.HoneyComb_Date_Pattern_Short);
		try {
			return df.parse(dtStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

	//转化数字型字符串
	public static final int string2Int(String str, int defaultVal) {
		try {
			return Integer.parseInt(str);
		} catch (Exception ex) {
		}
		return defaultVal;
	}

	//转化数字型字符串
	public static final double string2Double(String str, double defaultVal) {
		try {
			return Double.parseDouble(str);
		} catch (Exception ex) {
		}
		return defaultVal;
	}
	
	/**
	 *  得到UUID
	 * @return String
	 * 				返回32位的UUID，去除了中间的连字号
	 * @author Zhongjiang
	 */
	public static final String getUUIDString() {
		return UUID.randomUUID().toString().replaceAll("-", "");
	}

	/**
	 *  拆分字符串
	 * @param str
	 * 				被拆分的字符串
	 * @param c
	 * 				分隔符
	 * @param max
	 * 				最多拆分数
	 * @return String[]
	 * 				返回拆分好的字符串，如果不符合要去，返回null
	 * @author Wangyu
	 */
	public static final String[] splitStr(String str, String c, int max) {
		if (SystemValidate.isEmpty(str)) {
			return null;
		}
		String[] strArr = str.split(c);
		for (int i = 0; i < strArr.length; i++) {
			if (SystemValidate.isEmpty(strArr[i])) {
				return null;
			}
		}
		if (strArr.length > max) {
			return null;
		}
		return strArr;
	}

	/**
	 *  拆分字符串
	 * @param str
	 * 				被拆分的字符串
	 * @param c
	 * 				分隔符
	 * @author Wangyu 
	 */
	public static final String[] splitStr(String str, String c) {
		return splitStr(str, c, 999999);
	}

	public static void main(String[] args) {
//		System.out.println("===============得到当前的时间INT值=====================");
//		System.out.println(HoneyCombTools.convertCurrentDTTMtoInt());
//		System.out.println("===============得到当前的日期INT值=====================");
//		System.out.println(HoneyCombTools.convertCurrentDTtoInt());
//
//		System.out.println("===============将时间INT值转化成String=====================");
//		System.out.println(HoneyCombTools.formatDTTM(HoneyCombTools.convertIntToDTTM(HoneyCombTools.convertCurrentDTTMtoInt())));
//		System.out.println("===============将日期INT值转化成String=====================");
//		System.out.println(HoneyCombTools.formatDT(HoneyCombTools.convertIntToDT(HoneyCombTools.convertCurrentDTtoInt())));
//
//		System.out.println("===============将时间字符串 转化成 INT值=====================");
//		String t1 = "2011-8-10 11:11:11";
//		System.out.println(HoneyCombTools.convertDTTMtoInt(HoneyCombTools.formatStringToDateDTTM(t1)));
//		System.out.println("===============将日期字符串 转化成 INT值=====================");
//		String t2 = "2011-11-10";
//		System.out.println(HoneyCombTools.convertDTtoInt(HoneyCombTools.formatStringToDateDT(t2)));
	}

}
